package factory

import "fmt"

// 结构体中首字母大写的允许外部访问
type Student struct {
	Id    int
	Name  string
	score int // 首字母小写是私有的属性
}

func (s Student) Say() string {
	return fmt.Sprintf("我叫%s，我的学号是%d", s.Name, s.Id)
}

// 方法为指针接受者，可以修改原来学生的成绩
func (s *Student) SetScore(n int) {
	s.score = n
}

// 创建一个工厂函数，专门创建Student对象
// 返回创建的Student对象指针类型
func NewStudent(id int, name string, score int) *Student {
	return &Student{id, name, score}
}
